xpopupmenu.h

Go to the documentation of this file.
00001 
00015 #ifndef _XPOPUPMENU_H_
00016 #define _XPOPUPMENU_H_
00017 
00018 #include "../defines.h"
00019 #include "xpopupmenuitem.h"
00020 
00021 #define XPS_ICON3D        0x01 
00022 #define XPS_DISABLEDSEL   0x02 
00023 #define XPS_ICON3DSHADOW  0x04 
00024 
00025 
00031 typedef struct tagXPMENUCOLORS {
00032 
00033   COLORREF m_clrBack;               
00034   COLORREF m_clrBox;                
00035   COLORREF m_clrSelection;          
00036   COLORREF m_clrDisabledSelection;  
00037   COLORREF m_clrText;               
00038   COLORREF m_clrDisabledText;       
00039   COLORREF m_clrCheckBox;           
00040   COLORREF m_clrDisabledCheckBox;   
00041   COLORREF m_clrSeparatorLine;      
00042   COLORREF m_clrSelectionBorder;    
00043 
00044 } XPMENUCOLORS, * LPXPMENUCOLORS;
00045 
00052 class XPopupMenu {
00053 
00054 public:
00055 
00061   enum MenuStyle {
00062 
00063     XPMS_OFFICE2003,
00064     XPMS_OFFICE2003_REV,
00065     XPMS_OFFICEXP,
00066     XPMS_ICY,
00067     XPMS_ICY_REV,
00068     XPMS_GRADE,
00069     XPMS_GRADE_REV,
00070     XPMS_NORMAL,
00071     XPMS_CUSTOM
00072   };
00073 
00074   XPopupMenu( HMENU hMenu );
00075   XPopupMenu( TString & tsMenuName, MenuStyle mStyle );
00076   virtual ~XPopupMenu( );
00077 
00078   void parseXPopCommand( TString & input );
00079   void parseXPopIdentifier( TString & input, char * szReturnValue );
00080 
00081   HMENU parsePath( TString & path, HMENU hParent, int depth = 1 );
00082 
00083   HIMAGELIST getImageList( );
00084   void destroyImageList( );
00085 
00086   MenuStyle getStyle( );
00087   void setStyle( MenuStyle style );
00088   UINT getItemStyle( );
00089   void setItemStyle( UINT iExStyles );
00090 
00091   void deleteMenuItemData( XPopupMenuItem * p_Item );
00092   void deleteAllItemData( HMENU hMenu );
00093 
00094   TString getName( );
00095 
00096   HMENU getMenuHandle( ) { return this->m_hMenu; };
00097 
00098   LPXPMENUCOLORS getColors( );
00099   void setColor( int nColor, COLORREF clrColor );
00100   COLORREF getColor( int nColor );
00101 
00102   static LRESULT CALLBACK XPopupMenuProc( HWND mHwnd, UINT uMsg, WPARAM wParam, LPARAM lParam );
00103   static LRESULT CALLBACK XPopupWinProc( HWND mHwnd, UINT uMsg, WPARAM wParam, LPARAM lParam );
00104 
00105   static LRESULT OnMeasureItem( HWND mHwnd, LPMEASUREITEMSTRUCT lpmis );
00106   static LRESULT OnDrawItem( HWND mHwnd, LPDRAWITEMSTRUCT lpdis ); 
00107 
00108   void convertMenu( HMENU hMenu, BOOL bForce );
00109   void cleanMenu( HMENU hMenu );
00110   void clearAllMenuItems( );
00111 
00112   HBITMAP getBackBitmap( );
00113   void setBackBitmap( HBITMAP hBitmap );
00114 
00115 protected:
00116 
00117   HMENU m_hMenu; 
00118   HIMAGELIST m_hImageList; 
00119   MenuStyle m_MenuStyle; 
00120   TString m_tsMenuName; 
00121   VectorOfXPopupMenuItem m_vpMenuItem; 
00122   UINT m_MenuItemStyles; 
00123 
00124   HBITMAP m_hBitmap; 
00125 
00126   XPMENUCOLORS m_MenuColors; 
00127 
00128   void parseSwitchFlags( TString * switchs, XSwitchFlags * flags );
00129 };
00130 
00131 typedef std::vector<XPopupMenu *> VectorOfXPopupMenu; 
00132 
00133 #endif // _XPOPUPMENU_H_

Generated on Tue Jan 31 20:14:48 2006 for XPopup by  doxygen 1.4.6-NO